package auth

// PermissionType 权限类型
type PermissionType string

const (
	// MenuPermission 菜单权限
	MenuPermission PermissionType = "menu"
	// ButtonPermission 按钮权限
	ButtonPermission PermissionType = "button"
	// APIPermission API权限
	APIPermission PermissionType = "api"
	// DataPermission 数据权限
	DataPermission PermissionType = "data"
)

// DataScope 数据范围类型
type DataScope string

const (
	// AllDataScope 全部数据权限
	AllDataScope DataScope = "all"
	// DeptDataScope 本部门数据权限
	DeptDataScope DataScope = "dept"
	// DeptAndChildDataScope 本部门及下级数据权限
	DeptAndChildDataScope DataScope = "dept_and_child"
	// SelfDataScope 仅本人数据权限
	SelfDataScope DataScope = "self"
	// CustomDataScope 自定义数据权限
	CustomDataScope DataScope = "custom"
)

// Permission 权限模型
type Permission struct {
	ID          uint64         `json:"id"`
	Name        string         `json:"name"`
	Type        PermissionType `json:"type"`
	Identifier  string         `json:"identifier"` // 权限标识，如system:user:list
	Description string         `json:"description"`
}

// DataPermissionRule 数据权限规则
type DataPermissionRule struct {
	RoleID    uint64    `json:"roleId"`
	DataScope DataScope `json:"dataScope"`
	DeptIDs   []uint64  `json:"deptIds"` // 当DataScope为CustomDataScope时使用
}

// PermissionManager 权限管理器
type PermissionManager struct {
}

// New 创建权限管理器实例
func New() *PermissionManager {
	return &PermissionManager{}
}

// TODO: 实现权限检查方法
// TODO: 实现菜单权限过滤
// TODO: 实现按钮权限过滤
// TODO: 实现API权限过滤
// TODO: 实现数据权限过滤
// TODO: 实现权限缓存机制
